ফাইল ম্যানেজমেন্ট সিস্টেম

Latest Technologies - অ্যাপাচি ক্যামেল (Apache  Camel) - প্র্যাকটিস প্রোজেক্টস | NCTB BOOK

Apache Camel ব্যবহার করে একটি ফাইল ম্যানেজমেন্ট সিস্টেম তৈরি করা একটি চমৎকার উপায় যা আপনাকে ফাইলগুলো পরিচালনা, স্থানান্তর, এবং প্রক্রিয়া করার সক্ষমতা দেয়। নিচে একটি সাধারণ ফাইল ম্যানেজমেন্ট সিস্টেমের ডিজাইন এবং বাস্তবায়ন নিয়ে আলোচনা করা হলো।

ফাইল ম্যানেজমেন্ট সিস্টেমের মূল বৈশিষ্ট্য

  1. ফাইল আপলোড: ব্যবহারকারী ফাইল আপলোড করতে পারবে।
  2. ফাইল ডাউনলোড: ব্যবহারকারী আপলোড করা ফাইলগুলি ডাউনলোড করতে পারবে।
  3. ফাইল স্থানান্তর: একটি ডিরেক্টরি থেকে অন্য ডিরেক্টরিতে ফাইল স্থানান্তর।
  4. ফাইল মুছে ফেলা: নির্দিষ্ট ফাইল মুছে ফেলার ক্ষমতা।
  5. ফাইল তালিকা: একটি ডিরেক্টরির সব ফাইলের তালিকা প্রদর্শন।

প্রযুক্তি ব্যবহার

  • Apache Camel: ইন্টিগ্রেশন এবং রাউটিংয়ের জন্য।
  • Spring Boot: অ্যাপ্লিকেশন তৈরি এবং পরিচালনার জন্য।
  • File Component: ফাইল পরিচালনার জন্য।
  • REST API: ফাইল আপলোড এবং ডাউনলোডের জন্য।

১. Maven প্রকল্প তৈরি করা

প্রথমে একটি Maven প্রকল্প তৈরি করুন:

mvn archetype:generate -DgroupId=com.example.filemanager -DartifactId=file-manager -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

২. Dependencies যুক্ত করা

pom.xml ফাইলে নিম্নলিখিত ডিপেনডেন্সি যুক্ত করুন:

<dependencies>
    <dependency>
        <groupId>org.apache.camel</groupId>
        <artifactId>camel-spring-boot-starter</artifactId>
        <version>3.17.0</version>
    </dependency>
    <dependency>
        <groupId>org.apache.camel</groupId>
        <artifactId>camel-http</artifactId>
        <version>3.17.0</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
    </dependency>
</dependencies>

৩. ফাইল ম্যানেজমেন্ট সিস্টেমের রাউট তৈরি করা

FileRouteBuilder.java ক্লাস তৈরি করুন, যেখানে ফাইল পরিচালনার রাউট তৈরি করবেন:

import org.apache.camel.builder.RouteBuilder;
import org.springframework.stereotype.Component;

@Component
public class FileRouteBuilder extends RouteBuilder {
    @Override
    public void configure() {
        // Upload file route
        from("file:input?noop=true") // Read files from input directory
            .to("file:output"); // Move files to output directory

        // Delete file route
        from("direct:deleteFile")
            .process(exchange -> {
                String fileName = exchange.getIn().getBody(String.class);
                // Logic to delete the file
                java.nio.file.Files.deleteIfExists(java.nio.file.Paths.get("output/" + fileName));
            });

        // List files route
        from("direct:listFiles")
            .process(exchange -> {
                // Logic to list files in the output directory
                java.io.File dir = new java.io.File("output");
                String[] files = dir.list();
                exchange.getIn().setBody(files);
            });
    }
}

৪. REST API তৈরি করা

REST API তৈরি করতে, FileController.java ক্লাস তৈরি করুন:

import org.apache.camel.ProducerTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/api/files")
public class FileController {

    @Autowired
    private ProducerTemplate producerTemplate;

    @PostMapping("/upload")
    public String uploadFile(@RequestParam("file") MultipartFile file) {
        // Logic to save the file
        // Example: save the file in the input directory
        try {
            file.transferTo(new File("input/" + file.getOriginalFilename()));
            return "File uploaded successfully";
        } catch (IOException e) {
            return "File upload failed";
        }
    }

    @DeleteMapping("/{fileName}")
    public String deleteFile(@PathVariable String fileName) {
        producerTemplate.sendBody("direct:deleteFile", fileName);
        return "File deleted successfully";
    }

    @GetMapping("/list")
    public String[] listFiles() {
        return producerTemplate.requestBody("direct:listFiles", null, String[].class);
    }
}

৫. Spring Boot Application ক্লাস তৈরি করা

অ্যাপ্লিকেশন চালানোর জন্য একটি FileManagerApplication.java ক্লাস তৈরি করুন:

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class FileManagerApplication {
    public static void main(String[] args) {
        SpringApplication.run(FileManagerApplication.class, args);
    }
}

৬. টেস্ট করা

অ্যাপ্লিকেশন চালানোর পর, আপনি HTTP POST, GET, এবং DELETE রিকোয়েস্ট ব্যবহার করে ফাইল আপলোড, তালিকা এবং মুছে ফেলার কার্যক্রম পরীক্ষা করতে পারেন।

  • File Upload: POST /api/files/upload এ ফাইল আপলোড করুন।
  • List Files: GET /api/files/list এ ফাইলের তালিকা দেখুন।
  • Delete File: DELETE /api/files/{fileName} এ ফাইল মুছুন।

উপসংহার

এই ফাইল ম্যানেজমেন্ট সিস্টেমটি Apache Camel ব্যবহার করে একটি সাধারণ এবং কার্যকরী উদাহরণ। আপনি এটি ব্যবহার করে ফাইল পরিচালনার জন্য আপনার প্রয়োজনীয় বৈশিষ্ট্যগুলি তৈরি করতে পারবেন এবং এর মাধ্যমে Camel-এর বিভিন্ন ফিচার সম্পর্কে ধারণা লাভ করবেন।

এই প্রকল্পটি আপনার প্রকল্পগুলিতে আরও উন্নত কার্যকারিতা যোগ করার জন্য ভিত্তি হিসেবে কাজ করতে পারে।

Promotion